#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <errno.h>
#include <stdio.h>
#include <modbus.h>
#include <pthread.h>
#include <unistd.h>
#include <string.h>
#include <sys/msg.h>

struct msg
{
    long type;
    int key;
    char buf[32];
};

int main(int argc, char *argv[])
{
    int msgid;
    int key = ftok("./thttpd-master/custom_handle.h", 'a');
    if (key < 0)
    {
        perror("ftok err");
        return -1;
    }
    printf("key:%#x\n", key);
    //打开消息队列
    msgid = msgget(key, IPC_CREAT | IPC_EXCL | 0666);
    if (msgid <= 0)
    {
        if (errno == EEXIST)
            msgid = msgget(key, 0666);
        else
        {
            perror("msgget err");
            return -1;
        }
    }
    printf("msgid: %d\n", msgid);
    // 消息队列测试
    struct msg n;
    while (1)
    {
        int res = msgrcv(msgid,&n,sizeof(n) - sizeof(long),222,0);     //  1如果写成0 代表不管何种消息类型 都接收第一个来的
        if (res == -1)
        {
            printf("send err\n");
            return -1;
        }
        printf("%d ------------- %s\n",n.key,n.buf);
    }
    return 0;
}